
#调用方法，传入4个键盘输入的数字，并求和。返回打印。
print("-------------------------------------------------------------------------")
def four_sum(num1,num2,num3,num4):
    s = num1 + num2 + num3 + num4
    return s

num1 = int(input("请输入第一位数："))
num2 = int(input("请输入第二位数："))
num3 = int(input("请输入第三位数："))
num4 = int(input("请输入第四位数："))
print(f"他们的和为：{four_sum(num1,num2,num3,num4)}")

#编写一个方法，传入一个列表，并求出列表的总和
print("-------------------------------------------------------------------------")
def getsum(s):
    sum = 0
    for i in s:
        i = int(i)
        sum += i
    return sum
tab = []
tab = input("请输入数字（多个数字以“，”隔开）:").split(',')
print(f"数字总和为{getsum(tab)}")



#编写一个方法，打印99乘法表
print("-------------------------------------------------------------------------")
def chengfa():
    for i in range(1,10):
        for j in range(1,i+1):
            print(j,"x",i,"=",(j*i),end="\t")
        print()

chengfa()


#编写一个方法，传入一个数字N，然后打印NxN的乘法表。
print("-------------------------------------------------------------------------")
def NxN(num):
    for i in range(1,num+1):
        for j in range(1,i+1):
            print(j,"x",i,"=",(j*i),end="\t")
        print()

N = int(input("请输入数字N:"))
NxN(N)

'''编写方法, 接收一个列表和一个数字，返回这个列表中对应数字的数据，如果数字超出列表长度范围，返回-1
比如：[10,45,82,32] ，传入6，则这个6超出列表长度范围，返回-1.  若传入2，返回82
'''
print("-------------------------------------------------------------------------")
def jiansuo(table,num):
    lengh = len(table)
    if lengh <= num:
        return -1
    else:
        return table[num]

table = [3,6,8,4,7,37,3,73434,74,11]
tab = int(input("请输入数字:"))
print(jiansuo(table,tab))

#同样使用方法的递归，求1~300所有数的和。（方法调用自己完成操作）
print("-------------------------------------------------------------------------")
def sum_1_300(num):
    if num == 1:
        return 1
    else:
        return sum_1_300(num-1)+num
print(f"1~300所有数和为:{sum_1_300(300)}")


'''
用三个列表表示三个部门的人员情况(一个员工可以同时在多个部门存在)
测试部 = ['小明','小张','小黄','小杨']
研发部 = ['小黄','小李','小王','小杨','小周']
市场部 = ['小杨','小张','小吴','小冯','小周']
1)求部门员工总共有多少人
2)求只在一个部门存在的人的数量和对应的名字
3)在两个部门以及以上的人员有哪些
'''
print("-------------------------------------------------------------------------")
test = ['小明','小张','小黄','小杨']
research = ['小黄','小李','小王','小杨','小周']
market = ['小杨','小张','小吴','小冯','小周']

def people_num(tab1,tab2,tab3):
    sum = tab1 + tab2 + tab3
    name_num = []
    dname = []
    rname = []
    for i in sum:
        flag = 0
        for j in name_num:
            if i == j: #如果name_num中已经存在
                xflag = 0
                for x in rname:
                    if i == x: #如果rname中已存在
                        xflag = 1
                if xflag == 0:
                    rname.append(i)
                flag = 1
        if flag == 0:
            name_num.append(i)
    for i in name_num:
        dflag = 0
        for j in rname:
            if i == j:
                dflag = 1
        if dflag == 0:
            dname.append(i)
    print(name_num)
    print(dname)
    print(rname)
    num = len(name_num)
    dnum = len(dname)
    getnum = [num, [dnum,dname], rname]
    return getnum

t = people_num(test,research,market)

print(f"部门员工总共有{t[0]}人")
print(f"只在一个部门存在的人的数量为{t[1][0]}人,他们分别是{t[1][1]}")
print(f"在两个部门以及以上的人员分别是{t[2]}")


#编程实现NxN的乘法表的倒叙打印
print("-------------------------------------------------------------------------")
def dNxN(num):
    while num > 0:
        for i in range(1,num+1):
            print(i,"x",num,"=",(num*i),end="\t")
        num -= 1
        print()

N = int(input("请输入数字N:"))
dNxN(N)

print("-------------------------------------------------------------------------")
























